<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mutex: xmutex_tapp_example.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.gif"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">mutex
   </div>
   <div id="projectbrief">Xilinx SDK Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xmutex__tapp__example_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xmutex_tapp_example.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains a design example for using the Mutex hardware and driver <a class="el" href="struct_x_mutex.html" title="The XMutex driver instance data. ">XMutex</a>. </p>
<p>The example assumes there are two processors availabile in the system that are expected to inter-communicate.</p>
<p>This example attempts to lock the Mutex from the processor identified as 0 (XPAR_CPU_ID=0) to prevent the other processor from getting the lock. Since the application is running on two seperate processors, the initiator declares success when the Mutex locks the other processor declares success when the Mutex is locked from its perspective. There is no feedback to the initiator so a terminal is required for each processor to verify that the test passed for both sides.</p>
<p>This example has been tested on ML505 Hardware Evaluation board.</p>
<dl class="section note"><dt>Note</dt><dd></dd></dl>
<p>These code fragments will illustrate how the <a class="el" href="struct_x_mutex.html" title="The XMutex driver instance data. ">XMutex</a> driver can be used to:</p><ul>
<li>Initialize the Mutex core</li>
<li>Lock, Unlock and query the status of the hardware</li>
</ul>
<pre>
  MODIFICATION HISTORY:</pre><pre>  Ver   Who  Date        Changes
<hr/>

  1.00a va              First release
  1.00a ecm  06/04/07   Cleanup, new coding standard, check into XCS
  1.00a ecm  08/28/08   Converted to testapp example
  3.01a sdm  05/04/10   Removed printfs from the MutexExample
  4.2   ms   01/23/17   Modified xil_printf statement in main function to
                        ensure that "Successfully ran" and "Failed" strings
                        are available in all examples. This is a fix for
                        CR-965028.</pre><pre>*</pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a38d80185764e6fa61854824523d74f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex__tapp__example_8c.html#a38d80185764e6fa61854824523d74f14">MUTEX_NUM</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:a38d80185764e6fa61854824523d74f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Mutex number on which this example is run.  <a href="#a38d80185764e6fa61854824523d74f14">More...</a><br /></td></tr>
<tr class="separator:a38d80185764e6fa61854824523d74f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aa4d12e3d41820399786bffe09465a544"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex__tapp__example_8c.html#aa4d12e3d41820399786bffe09465a544">MutexExample</a> (u16 MutexDeviceID)</td></tr>
<tr class="memdesc:aa4d12e3d41820399786bffe09465a544"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function contains the actual functionality for the <a class="el" href="struct_x_mutex.html" title="The XMutex driver instance data. ">XMutex</a> TestApp example.  <a href="#aa4d12e3d41820399786bffe09465a544">More...</a><br /></td></tr>
<tr class="separator:aa4d12e3d41820399786bffe09465a544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840291bc02cba5474a4cb46a9b9566fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xmutex__tapp__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a> (void)</td></tr>
<tr class="memdesc:a840291bc02cba5474a4cb46a9b9566fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the main function for the Mutex example.  <a href="#a840291bc02cba5474a4cb46a9b9566fe">More...</a><br /></td></tr>
<tr class="separator:a840291bc02cba5474a4cb46a9b9566fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a38d80185764e6fa61854824523d74f14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38d80185764e6fa61854824523d74f14">&#9670;&nbsp;</a></span>MUTEX_NUM</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MUTEX_NUM&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The Mutex number on which this example is run. </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a840291bc02cba5474a4cb46a9b9566fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a840291bc02cba5474a4cb46a9b9566fe">&#9670;&nbsp;</a></span>main()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is the main function for the Mutex example. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">None.</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS if successful.</li>
<li>XST_FAILURE if unsuccessful.</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

</div>
</div>
<a id="aa4d12e3d41820399786bffe09465a544"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4d12e3d41820399786bffe09465a544">&#9670;&nbsp;</a></span>MutexExample()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int MutexExample </td>
          <td>(</td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>MutexDeviceID</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function contains the actual functionality for the <a class="el" href="struct_x_mutex.html" title="The XMutex driver instance data. ">XMutex</a> TestApp example. </p>
<p>he idea is to have this application running on two processors which share the same bus and have access to the Mutex hardware. CPU 0 is considered the primary CPU since it is the one which is expected to initially lock the Mutex.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">MutexDeviceID</td><td>is the device id to be initialized and used.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS if successful</li>
<li>XST_FAILURE if unsuccessful</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Copyright &copy; 2015 Xilinx Inc. All rights reserved.</li>
  </ul>
</div>
</body>
</html>
